package com.wicket.okrcomponent.integration.dto;

import com.wicket.okrcomponent.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * @desc MessageNumLoopStartDto
 * @使用场景
 */
@Data
public class MessageNumLoopStartDto extends BaseDto implements Serializable {

  /**
   * 身份人员ID
   */
  @ApiModelProperty("身份人员ID")
  private String originalRoleMemberId;

  /**
   * 账号
   */
  @ApiModelProperty("账号")
  private String userId;

  /**
   * 创建于空间ID
   */
  @ApiModelProperty("创建于空间ID")
  private String spaceId;

  /**
   * 创建于联盟应用ID
   */
  @ApiModelProperty("创建于联盟应用ID")
  private String appId;

  /**
   * 消息位置标识
   */
  @ApiModelProperty("消息位置标识")
  private String messageLocationTypeCode;

  /**
   * 消息数量主体类型 INDUCTION_RECORD:就职记录 ORIGINAL_ROLE_MEMBER:身份人员 ORG_OR_DEPT:组织部门 MEMBER_CHANNEL_RELATION:成员通道
   */
  @ApiModelProperty("消息数量主体类型")
  private String msgNumberSubjectType;

  /**
   * 消息数量主体ID
   */
  @ApiModelProperty("消息数量主体ID")
  private String msgNumberSubjectId;

  /**
   * 消息数量ID
   */
  @ApiModelProperty("消息数量ID")
  private String messageLocationRemindId;

  /**
   * 消息数
   */
  @ApiModelProperty("消息数")
  private Long messageNum;

  /**
   * 归属内容类型编码 INDUCTION_RECORD:就职记录 ORIGINAL_ROLE_MEMBER:身份人员 ORG_OR_DEPT:组织部门 MEMBER_CHANNEL_RELATION:成员通道 OMS_EVALUATION_TEMPLATE:评价模板
   */
  @ApiModelProperty("归属内容类型编码")
  private String surfaceCode;

  /**
   * 归属内容ID
   */
  @ApiModelProperty("归属内容ID")
  private String entityId;

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;
    MessageNumLoopStartDto that = (MessageNumLoopStartDto) o;
    return (
      originalRoleMemberId == that.originalRoleMemberId &&
      userId == that.userId &&
      spaceId == that.spaceId &&
      appId == that.appId &&
      messageLocationTypeCode == that.messageLocationTypeCode &&
      msgNumberSubjectType == that.msgNumberSubjectType &&
      msgNumberSubjectId == that.msgNumberSubjectId &&
      messageLocationRemindId == that.messageLocationRemindId &&
      messageNum == that.messageNum &&
      surfaceCode == that.surfaceCode &&
      entityId == that.entityId
    );
  }

  @Override
  public int hashCode() {
    return Objects.hash(
      super.hashCode(),
      originalRoleMemberId,
      userId,
      spaceId,
      appId,
      messageLocationTypeCode,
      msgNumberSubjectType,
      msgNumberSubjectId,
      messageLocationRemindId,
      messageNum,
      surfaceCode,
      entityId
    );
  }

}
